<?php
namespace app\common\controller;
trait Auth{
    /**
     * 判断用户是否拥有该方法的操作权限
     * @param  integer $uid 当前登录会员ID
     * @return void
     */
    function checkUserHasAuth($uid){
        if($uid===config('auth.super_id')){
            // 超级管理员
            return;
        }
        $module=request()->module();
        if(!in_array($module,config('auth.auth_module'))){
            // 该模块未进行权限控制
            return;
        }
        $controller=request()->controller();
        if(in_array($controller,config('auth.exclude_controller'))){
            // 该控制器被排除在权限控制之外
            return;
        }
        $action=request()->action();
        $map=[
            'name'=>$module.'/'.$controller.'/'.$action
        ];
        $has=model('node')->read($map,'id');
        if(empty($has)){
            // 该地址并未进行限定权限控制
            return;
        }
        // 用户角色ID组
        $roleIds=model('role')->getRoleIds($uid);
        if(empty($roleIds)){
            // 该用户尚未加入任何分组（游客）
            $this->error(lang('Tourist identity is not accessible'));
        }
        // 用户权限ID组
        $auths=model('role')->getNodeIds($roleIds);
        if(empty($roleIds)||!in_array($has['id'],$auths)){
            // 该用户未被授权
            $this->error(lang('Insufficient privileges'));
        }

        
    }
}
